// GLScene.h

#ifndef GLSCENE_H_
#define GLSCENE_H_

#define GL3_PROTOTYPES

// Include the vector and matrix utilities from the textbook, as well as some
// macro definitions.
#include "Angel.h"

#ifdef __APPLE__
#  include <OpenGL/gl3.h>
#endif

#include <stdio.h>
#include <fstream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <vector>
#include "DebugHelper.h"
#include "GLObject3D.h"
#include "ConcreteGLObject3D.h"

namespace Voltron
{

	class GLScene
	{

		private:

		// Private Constructors
		// Private Destructor
		// Private properties
		// Private members

		protected:

		// Protected Constructors
		// Protected Destructor
		// Protected properties
		// Protected members

		public:
		// Public Constructors
		GLScene();
		GLScene(int quantityGLObjects);
		GLScene( vector < GLObject3D* > *sceneObjects);

		// Public Destructor
		~GLScene();


		// Public members
		string _filename;
		vector<string> _objectfilenames;
                vector< GLObject3D* > *_sceneObjects;


		// Public members
		void loadSceneFromFile(string scenefilename);
		void readObjectFilenamesFromSceneFile(string scenefilename);
                void addObject(GLObject3D *glObject);

	};
}

#endif
